7
תגובות

pdo mysql mysqli

פתח MYSQL ,
קראתי
http://php.net/manual/en/mysqli.overview.php
http://php.net/manual/en/book.pdo.php
אני רוצה לסכם וקצת לשאול , אשמח לעזרה בהרחבה
MYSQL זה מסד הנתונים החינמי והנפוץ ביותר ב PHP ולכן רוב מוחלט משתמשים בו.
כאשר אני משתמש בשאילתה רגילה(מה שעשיתי עד כה) עשיתי פשוט
$selectA = mysql_query("SELECT text FROM ***** WHERE id='$id' "); $read = mysql_fetch_array($selectA); $text=$read['text'];
איך זה נקרא? עבודה ישר מול הדרייבר?...



קראתי שאפשר להשתמש בMYSQLI שזה ספריה שנועדה לעזור לי בכתיבה, והיא כמובן OOP - לא הבנתי כ"כ מה ההיתרונות שלה
ואז יש את PDO שזה הספריה היותר מתקדמת שהיא כמובן OOP , והייתרון המרכזי שלה שהיא לא תלויה במסד נתונים ואם אחליף למסד אחר במקום MYSQL זה שינוי פשוט
ראיתי שיש חסרון גם בPDO (ואני מצטט)
", its main disadvantage is that it doesn't allow you to use all of the advanced features that are available in the latest versions of MySQL server. For example, PDO does not allow you to use MySQL's support for Multiple Statements."
לא הבנתי מה זה Multiple Statements האם זה שליפה עם יותר מתנאי 1 ?(תנאים מרובים?) והאם זה עדין חיסרון? האם זה חיסרון משמעותי כ"כ ?

כמו כן, האם באמת כדאי לעבור ל PDO מאשר ל MYSQL ?

אם אסכם את השאלות
1- מה הייתרונות להשתמש בשאילתות כמו שכתבתי עד כה(הבאתי דוגמה למעלה)
2- מה הייתרונות ב ב MYSQLI
3- מה הייתרונות והחסרונות ב PDO ,והאם באמת כ"כ כדאי לעבור אליו
4- כמו כן היה משהו שכתוב בלינקים שציינתי לעייל שדיברו על דרייבים שלא הבנתי , ציטוטו
"What is the PDO MYSQL driver?

The PDO MYSQL driver is not an API as such, at least from the PHP programmer's perspective. In fact the PDO MYSQL driver sits in the layer below PDO itself and provides MySQL-specific functionality. The programmer still calls the PDO API, but PDO uses the PDO MYSQL driver to carry out communication with the MySQL server.

The PDO MYSQL driver is one of several available PDO drivers. Other PDO drivers available include those for the Firebird and PostgreSQL database servers.

The PDO MYSQL driver is implemented using the PHP extension framework. Its source code is located in the directory ext/pdo_mysql. It does not expose an API to the PHP programmer.

For further information on the PDO MYSQL driver, see MySQL (PDO).

What is PHP's MySQL Native Driver?

In order to communicate with the MySQL database server the mysql extension, mysqli and the PDO MYSQL driver each use a low-level library that implements the required protocol. In the past, the only available library was the MySQL Client Library, otherwise known as libmysqlclient.

However, the interface presented by libmysqlclient was not optimized for communication with PHP applications, as libmysqlclient was originally designed with C applications in mind. For this reason the MySQL Native Driver, mysqlnd, was developed as an alternative to libmysqlclient for PHP applications.

The mysql extension, the mysqli extension and the PDO MySQL driver can each be individually configured to use either libmysqlclient or mysqlnd. As mysqlnd is designed specifically to be utilised in the PHP system it has numerous memory and speed enhancements over libmysqlclient. You are strongly encouraged to take advantage of these improvements."


מה בידיוק הם רוצים? MYSQLI עובד יותר עם API ו PDO לא? אשמח לקצת הסבר בנושא שם
תודה רבה וחג שמח!!!

7 תשובות

avatar ענה Splash ב 04 לאוקטובר 2015 #

אני יסמן את השאלות שלך ב +1 משום שאת השאלה הראשונה לא מספרת.

1.עבודה עם הדריבר הישן של mysql
2. אין.
4+3 - pdo vs mysqli
5. כתוב שאנשים מתייחסים ל pdo mysql כ api אף על פי שהוא לא.

הדבר הכי חשוב שכדאי שיצא מהנושא הזה הוא שבשום פנים ואופן לא להשתמש בדריבר הישן [mysql] הוא לא נתמך כבר המון שנים ועם זאת אנשים שרק התחילו ללמוד php עדיין עובדים איתו ,למה ? אלוהים יודע אני מקווה שמתי שיצא php 7 וכבר לא תיהיה תמיכה סופית ב mysql אנשים ילמדו לא להשתמש בו.

מספר הערות -
1.גם PDO וגם MYSQLI שניהם מונחי עצמים,לעומת זאת ל MYSQLI יש אופציה גם לתכנות פרוצדוראלי.
2.Multiple Statements מאפשר לך להריץ מספר שאילתות במקביל,מאחר ולא כל המסדים מאפשרים זאת PDO לא יכול לתמוך בפונקציונאליות הזאת.
3.אומנם PDO תומך במספר מסדים אבל אתה צריך להבין שהשאילתות שלך לא בהכרח תומכות במסד שאתה רוצה לעבור אליו.
לדוגמא מ mysql ל sql server - בעוד שב mysql שליפה של כמות מסוימת של תוצאות נעשית ע"י LIMIT בסוף שאילתה ב sql server השליפה נעשית ע"י המילה TOP בתחילת השאילתה.
על מנת שתוכל באמת לעבור בין מסדים אתה תצטרך ליצור מחלקה[או להשתמש באחת שנמצאת ברשת] שתתרגם פעולות לשאילתות

avatar ענה MYSQL ב 04 לאוקטובר 2015 #

הבנתי שצריך לזרוק את הדרך בה אני עובד מייד
1. לפי דבריך אני מבין שעדיף MYSQLI , מאשר PDO , אשמח אם תרחיב קצת בנושא כיוון שלא ראיתי בפוסט שציינת נימוקים חותכים,
בנוסף, מה הוא "לתכנות פרוצדוראלי" ש MYSQLI תומכת בו ו PDO לא , והאם הוא כ"כ חשוב (הבנתי שזה ההפך מ OOP אבל לא הבנתי איך זה בא לידי ביטוי ולמה זה חשוב שזה מהווה ייתרון ל MYSQLI ), אתה לצורך העניין משתמש רק ב MYSQLI ולא ב PDO ?
2. קראתי על Multiple Statements , אך עדיין לא הבנתי לעומק מה מטרתו ולמה הוא כ"כ חיסרון שאין אותו ב PDO ....
3. מה ההבדל המהותי בין MYSQLI ו PDO מה צורת החשיבה השונה בניהם?

חג שמח!!!

avatar ענה intval ב 04 לאוקטובר 2015 #

בסדר הפוך:

3. אין. הם אותו דבר

2. התכנות מונחה עצמים או פרוצדורלי כרגע לא רלוונטי, ולמען האמת גם בעתיד זה כנראה לא יהיה רלוונטי. אלו הם שני דרכי פיתוח תוכנה שונות, אך ליכולות של pdo ו-mysqli אין שום קשר או השפעה על הצורה שתבחר לפיתוח התוכנה שלך, ולצורה שתבחר להשתמש בה אין חשיבות לגבי הספריה שתבחר.

1. mysqli מותאמת ספציפית לעבוד מול תוכנה שנקראת mysql, אילו pdo מותאמת לעבוד מול תוכנות שונות, מה שאומר שמעוגלות באחרון כמה פינות.
מבחינתך אין שום סיכוי שתמצא את ההבדל, בייחוד כששימוש בפינות המעוגלות האלה הוא די נדיר, אם לא קיים.

המלצה שלי היא שתמש ב-pdo
ולא מהסיבה שהיכולות שלה עדיפות, אלא מהסיבה היחידה שיותר קל למצוא עזרה בתחום. ישנם יותר מדריכים, יותר אנשים שמתמצאים ושימוש נרחב יותר באוםן כללי. מבחינה טכנית נטו אין לבחירה שתעשה בין השניים כמעט שום השפעה לא על העתיד של התוכנה שלך ולא על העתיד שלך בתור מתכנת.

avatar ענה MYSQL ב 06 לאוקטובר 2015 #

מודה לך מאוד על התשובות המלאות
1,בתעשיה,במה משתמשים יותר?
נגיד וורדפרס במה משתמשים?דרופל?
2,החיסרון היחיד של mysqli זה רק הקטע שלMultiple Statements?
זה לא יהיה חסר לי?
3, למה אתה טוען שלא משנה אם אשתמש בשניהם,כי איו הבדל בין מונחה עצמין לפרוצדואלי?(אני מביו שהתכוונת כמובן לעבודה מול המסד ולא בתיכנות עצמו) אבל מדוע אין הבדל?
תודה שוב

avatar ענה intval ב 06 לאוקטובר 2015 #

1. pdo, לכן המלצתי עליו (קריא שימוש נרחב יותר)
2. זה לא החסרון של mysqli, זה היתרון. ולא, זה לא יחסר לך. אני אישית לא השתמשתי ביכולות הזאת אף פעם ולא מכיר הרבה שעשו בה שימוש.
3. זה לא מה שאמרתי.

> כי איו הבדל בין מונחה עצמין לפרוצדואלי
יש הבדל בין תכנות מונחה עצמים לבין תכנות פרוצדורלי. וההבדל הזה לא מהווה סיבה שבגללה עליך לבחור באחת הספריות.

אין זה משנה באיזו מהספריות תבחר (pdo או mysqli) בגלל שבשניהן תוכל להשתמש בין אם תבחר פרוצדוראלי ובין אם תבחר מונחה עצמים.
הרי זה שהפונקציה echo לא שייכת לשום מחלקה לא מונע ממך לכתוב תוכנה מונחית עצמים, כך גם העבודה שהפונקציה mysqli_bla אינה חחלק ממחלה לא תמנע ממך זאת.

בנוסף אני אומר כאן שזה לא משנה באיזו ספריה אתה תבחר, בגלל שההבדל ביניהם כה מזערי שאם תלמד אחת מהן, תוכל להשתמש בשניה גם אם יעירו אותך באמצע הלילה ויתנו לך 10 דקות על מחשב עם גישה לאינטרנט. חוץ מזה, הן שניהן מיועדות לאותה משימה

ההבדל בין שמירת נתונים בקבצים לבין עבודה עם מסד נתונים הוא כמו ההבדל בין נסיעה מתל אביב לחיפה באופניים לאומת רכב.
אך אם בחרת ברכב, אין זה משנה אם תיסע בטויוטה צהובה עם גג נפתח או פגו' ירוקה עם קליטת רדיו משופרת.

avatar ענה MYSQL ב 06 לאוקטובר 2015 #

תותח תודה למדתי המון
אגב מחיפוש זריז וורדפרס לא עובדת עם pdo

כיצד ללמוד pdo
האם לקרוא את כל הפונקציות
http://php.net/manual/en/book.pdo.php
וזהו?
תאכלס מה כבר יש?שליפה מחיקה עידכון והוספה
שליפה joinמן הסתם גם וזהו...
או שיש מקור עדיף ללימוד

תודה רבה

avatar ענה intval ב 06 לאוקטובר 2015 #

המקור הכי טוב ללמוד הוא לפתוח עורך קוד ולהתחיל לכתוב שליפה, מחיקה, הכנסה ועדכון.
ולא לפספס prepared statements. על זה אולי כדאי לחפש מדריך נפרד אם מהדוקמנטציה לא יהיה מובן.